package  main.java.leetcode.editor.cn;
//2023-07-28 14:28:12
//设计一个算法，找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。 
//
// 示例 1: 
//
// 
//输入: nums = [5,6,5], target = 11
//输出: [[5,6]] 
//
// 示例 2: 
//
// 
//输入: nums = [5,6,5,6], target = 11
//输出: [[5,6],[5,6]] 
//
// 提示： 
//
// 
// nums.length <= 100000 
// -10^5 <= nums[i], target <= 10^5 
// 
// Related Topics 数组 哈希表 双指针 计数 排序 👍 48 👎 0

import java.util.*;

class PairsWithSumLcci {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new PairsWithSumLcci().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<List<Integer>> pairSums(int[] nums, int target) {
        Arrays.sort(nums);
        int left = 0;
        int right = nums.length-1;
        List<List<Integer>> res = new ArrayList<>();

        while (left<right){
            int val = nums[left] + nums[right];
            if(val == target){
                List<Integer> ans = new ArrayList<>();
                ans.add(nums[left]);
                ans.add(nums[right]);
                res.add(ans);
                left++;
                right--;
            }else if(val < target){
                left++;
            }else {
                right--;
            }
        }
        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
